home *** CD-ROM | disk | FTP | other *** search
/ 3D Games - Real-time Rend…ng & Software Technology / 3D Games - Real-time Rendering & Software Technology.iso / flysdk / lib / flyEngine / flySound.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2001-02-28  |  1.2 KB  |  80 lines

  1. #include "../Fly3D.h"
  2.  
  3. void sound::reset()
  4. {
  5.     for( int i=0;i<MAX_SOUND_CHANNELS;i++ )
  6.     {
  7.         if (buf3d[i]) 
  8.         { 
  9.             buf3d[i]->Release(); 
  10.             buf3d[i]=0; 
  11.         }
  12.         if (buf[i]) 
  13.         { 
  14.             buf[i]->Release(); 
  15.             buf[i]=0; 
  16.         }
  17.         bufuse[i]=0;
  18.     }
  19.     total_time=0; 
  20. }
  21.  
  22. int sound::load_wav(char *filename)
  23. {
  24.     if (directx==0)    return 0;
  25.  
  26.     fly_pak f;
  27.  
  28.     if (!f.open(filename)) return 0;
  29.  
  30.     reset();
  31.  
  32.     total_time=directx->load_wav_file(f.len,f.buf,&buf[0],&buf3d[0]);
  33.  
  34.     if (buf[0])
  35.     for( int i=1;i<MAX_SOUND_CHANNELS;i++ )
  36.     {
  37.     buf[i]=directx->clone_sound(buf[0]);
  38.     buf[i]->QueryInterface(IID_IDirectSound3DBuffer,(void **)(&buf3d[i]));
  39.     }
  40.  
  41.     return total_time;
  42. }
  43.  
  44. int sound::get_sound_instace()
  45. {
  46.     for( int i=0;i<MAX_SOUND_CHANNELS;i++ )
  47.         if (bufuse[i]==0 && buf[i])
  48.         {
  49.             bufuse[i]=1;
  50.             return i;
  51.         }
  52.     return -1;
  53. }
  54.  
  55. void sound::free_sound_instance(int i)
  56. {
  57.     if (i>=0 && i<MAX_SOUND_CHANNELS)
  58.     {
  59.         bufuse[i]=0;
  60.         buf[i]->Stop();
  61.         buf[i]->SetCurrentPosition(0);
  62.     }
  63. }
  64.  
  65. sound::sound()
  66. {
  67.     for( int i=0;i<MAX_SOUND_CHANNELS;i++ )
  68.     {
  69.         buf[i]=0; 
  70.         buf3d[i]=0;
  71.         bufuse[i]=0;
  72.     }
  73.     total_time=0; 
  74. };
  75.  
  76. sound::~sound()
  77.     reset();
  78. };
  79.